git使用

查看状态

git status

  • 该命令可以查出当前分支文件变更状态
  • 可以查出 工作区/暂存区/仓储区 中的状态
  • 显示出, 新增/删除/(路径)重命名/已暂存 等文件状态.

git diff

查看具体的修改内容

从远程厂库更新到本地

方法1

$ git fetch origin master //从远程的origin仓库的master分支下载代码到本地的origin master

$ git log -p master.. origin/master//比较本地的仓库和远程参考的区别

$ git merge origin/master//把远程下载下来的代码合并到本地仓库,远程的和本地的合并

方法2

$ git fetch origin master:temp //从远程的origin仓库的master分支下载到本地并新建一个分支temp

$ git diff temp//比较master分支和temp分支的不同

$ git merge temp//合并temp分支到master分支

$ git branch -d temp//删除temp

方法3

git pull origin master

上述命令其实相当于git fetch 和 git merge从远程获取最新版本并merge到本地,git pull <远程主机名> <远程分支名>:<本地分支名>

方法4 放弃本地修改强制更新

git fetch --all
git reset --hard origin/master

提交项目

git add filename //将文件添加至暂存区

git add .  //将所有文件添加至暂存区

git commit -m 'XXXX'  //将文件提交到本地仓库
git push origin master //将文件提交到远端仓库,git push <远程主机名> <本地分支名>:<远程分支名>

版本

列出tag

git tag

加上-l过滤

git tag -l "v3.3.*"

新建tag

git tag v1.0//创建一个名为v1.0的tag

新建有备注信息的tag

git tag -a tagName -m "my tag" //-a参数来创建一个带备注的tag,备注信息由-m指定

查看tag详细信息

git show tagName

给指定的某个commit号加tag

git tag -a v1.2 9fceb02 -m "my tag"

将tag同步到远程服务器

git push origin v1.0//git push origin [tagName]推送单个分支,推送本地所有tag,使用git push origin --tags。

删除本地tag

git tag -d 标签名

删除远程tag

git push origin :refs/tags/标签名  

提交项目到已存在远程分支

git add .  //将所有文件添加至暂存区
git commit -m 'XXXX'  //将文件提交到本地仓库

git branch xf //新建本地分支:git branch <branchname>

git branch -a //查看该项目的所有本地和远程分支,git branch 查看本地分支,git branch -r 查看远程分支

git checkout xf//切换本地分支

git pull origin xf:xf//把远程分支的代码pull到本地分支,git pull <远程主机名> <远程分支名>:<本地分支名>

git push origin xf:xf//将本地的xf分支推送到origin主机的xf分支。git push <远程主机名> <本地分支名>:<远程分支名>

git push origin test//如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建,将本地的test分支推送到origin主机的test分支。如果后者不存在,则会被新建。
//背景,我直接切换到了远程2.0.0的分支,并没有在本地创建一个2.0.0 的分支
//查看所有分支
$ git branch -a
* (HEAD detached from origin/2.0.0)
  master
  remotes/origin/2.0.0
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

//推送当前的分支到远程的2.0.0分支上,应为我本地没有创建2.0.0分支所以他生成了一个HEAD分支,我们直接推HEAD到2.0.0上
$ git push origin HEAD:2.0.0

克隆项目

回退

//表示回退到当前版本,HEAD指向当前版本。如果你修改了一些代码,想去除,就可以用git reset --hard HEAD一次性去除。
git reset --hard HEAD 


 //也可以回退到指定的版本
git checkout commit id 

还原到某次commit

//查看提交记录
git log

//使用git reset –hard 还原到某一次提交
git reset --hard commit ID

//或使用checkout,这个命令达到的效果和git reset –hard一样都是不可逆提交
git checkout commit ID

分支

创建分支
git branch <branch_name> #创建指定名称的分支

查看所有分支(包括远程分支)
git branch -a

查看本地分支
git branch

查看分支详情
git branch -v 或git branch -a -v

切换到指定分支
git checkout <branch_name>

创建并切换到指定分支
git checkout -b <branch_name>

删除一个干净的分支(即相对当前分支而言该分支没有新的提交记录)
git branch -d <branch_name>

强制删除一个分支,该分支有没有合并到当前分支的提交记录
git branch -D <branch_name>
注意:删除分支前都需要先切换到其他分支才能进行删除操作

重命名分支
git branch -m <branch_name> newname

将指定分支合并到当前分支
git merge <branch_name>

切换到远程分支
git checkout -b dev origin/dev		//checkout 远程的 dev 分支,在本地起名为 dev 分支,并切换到本地的 dev 分支,再git pull一下就会拉取远程分支的代码

提交本地分支到远程
$ git push origin test:master         // 提交本地test分支作为远程的master分支 //好像只写这一句,远程的github就会自动创建一个test分支
$ git push origin test:test              // 提交本地test分支作为远程的test分支

清空远程仓库

#递归删除文件夹下所有文件
git rm xxx(xxx表文件名)  -r ( -r 当给出主目录名时允许递归删除)
#删除单个文件
git rm readme.md

删除之后,本地目录下已经删除的文件夹就不再存在了,为了能将远程仓库的相应文件也删除掉,我们要把这次操作提交到上去
git commit -m "remove all file"
git push origin master

配置

Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能, 如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF:

$ git config --global core.autocrlf true

Linux或Mac系统使用LF作为行结束符,因此你不想Git在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正, 把core.autocrlf设置成input来告诉Git在提交时把CRLF转换成LF,签出时不转换:

$ git config --global core.autocrlf input

这样会在Windows系统上的签出文件中保留CRLF,会在Mac和Linux系统上,包括仓库中保留LF。 如果你是

Windows程序员,且正在开发仅运行在Windows上的项目,可以设置false取消此功能,把回车符记录在库中:

$ git config --global core.autocrlf false

重命名文件

#重命名文件/文件夹
git mv oldname newname

查看某个文件修改历史

git log --follow -p Cs_TrialRecord.qml

克隆指定版本

git clone -b v5.2.0 --depth=1 https://github.com/iPotato94/cas.git

-b 后面写上指定 版本标签 , 即 tag, 比如 v5.2.0

--depth 表示克隆深度, 1 表示只克隆最新的版本. 因为如果项目迭代的版本很多, 克隆会很慢

gitignore

  • gitignore可以忽略你不想上传的文件,只需要在.git同目录下新增.gitignore文件,然后添加不需要上次的目录即可

  • 以斜杠/开头表示目录;

  • 以星号*通配多个字符;

  • 以问号?通配单个字符

  • 以方括号[]包含单个字符的匹配列表;

  • 以叹号!表示不忽略(跟踪)匹配到的文件或目录

/mtk/ 过滤整个文件夹
*.zip 过滤所有.zip文件
/mtk/do.c 过滤某个具体文件
!src/   不过滤该文件夹
!*.zip   不过滤所有.zip文件

清除已经上传的多余文件

如果你添加.gitignore的时候,git里面已经上传了很多不需要的文件,则使用下面两个命令干掉他们

  • 如果是文件夹:git rm -r --cached 文件夹名
  • 如果是文件:git rm --cached 文件名
git rm -r --cached ./alg/.idea/
git add .
git commit -m 'update .gitignore'

删除本地所有未提交的更改

git reset --hard
git clean -xdf
# git  

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×