Git 常用命令

Posted songdechiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git 常用命令相关的知识,希望对你有一定的参考价值。

一、GIT 基础:

1、取得项目的仓库

git init

git add FILES

git clone [https/http、ssh、git]

 

2、记录每次更新到仓库

git status

git status -s 或 git status --short

.gitignore

 

git diff 【当前工作目录与暂存】

git diff --staged        【暂存与上次提交快照】

 

git commit

git commit -v(详细提示)

 

删除暂存区

git rm  FILES 【git rm log/\*.log,删除 log/ 目录下扩展名为 .log 的所有文件】

git rm -f FILES   (修改过且已经放到缓存区)

git rm --cached  FILES   (保留在硬盘,但不继续跟踪)

 

 git mv file_from file_to

 

3、查看提交历史

git log

git log -p -2 (显示每次提交的内容差异,显示最近的2次更新)

git log --stat (显示简要的增改行数统计)

git log --pretty=oneline/short/full/fuller/format

git log --graph

 

git log 【--since --until -n  --author --committer】

gitk

 

4、撤销

git commit --amend (撤销刚才的提交操作,重新commit暂存区新内容)

 

取消已经暂存的文件

 

git reset HEAD <file>  【有提示】

 

取消工作目录已经修改的文件

git checkout -- <file>  【危险】【有提示】

 

注意:任何已经提交到GIT的数据都可以被恢复。

 

5、远程仓库的使用

git remote                                                (至少有一个origin的远程库,git默认使用这个来标识你所克隆的原始仓库)

git remote -v                                            (显示对应的克隆地址)

git remote add [shortname] [url]              ( 添加一个新的远程仓库)

git fetch [remote-name]                           (fetch只是将远端仓库数据拉下来,并不自动合并到当前分支)

git pull                                                      (如果设置了某个分支跟踪远端仓库某个分支,远端分支自动合并到本地仓库的当前分支。

git push [remote-name] [branch-name]   (推到remote服务器上的某个branch上)

git remote rename [origin] [after]

git remote rm [remote-name]

 

 

 

二、分支

git branch [branch-name]                            【新建一个分支】

git checkout [branch-name]                         【切换到该新分支】

git checkout -b [branch-name]                     【新建并切换到新分支,上两条命令的结合】

git merge [branch-name]                             【合并branch-name分支到当前分支】

git branch -d [branch-name]                        【删除分支】

 

git branch                                                    【列出当前所有分支】

git branch -v                                                【查看各个分支最后一次commit信息】

git branch --merged                                    【查看哪些分支已经被合并到当前分支】

git branch --no-merged                               【查看哪些分支没有被合并到当前分支】

【已经合并的分支可以删除,未合并最好不要删除】

 

三、远程分支

(远程库名)/(分支名)   如:origin/master

git fetch [remote-name]                                                                           【fetch只是将远端仓库数据拉下来,并不自动合并到当前分支】

 获取尚未拥有的数据,更新本地数据库,移动指针(如origin/master)。

 

git push [remote-name]    [local-branch]:[remote-branch]                  【提取本地分支更新远程仓库某个分支】

eg:

git push origin serverfix                                                                              【取出本地分支serverfix,更新远程仓库serverfix分支】  

git push origin serverfix:awesomebranch                                                  【取出本地分支serverfix,更新远程仓库awesomebranch】

 

fetch之后:不会有新的serverfix分支,只有无法移动的origin/serverfix指针

git merge [remote-name]/[remote-branch]                                              【合并远程分支到当前分支】

git checkout -b [branch]    [remote-name]/[remote-branch]                 【在远程分支的基础上分化出一个新分支】

 

跟踪分支

git checkout --track  [remote-name]/[remote-branch]                           简化上一条指令

eg:git checkout --track origin/serverfix

 

git checkout --b  [branch]    [remote-name]/[remote-branch]               绑定远程分支和本地分支

eg:git checkout -b sf origin/serverfix

 

删除远程分支

git push origin :serverfix                                                                              用空来更新远程分支

 

 

四、衍合

git rebase master                                          【当前分支衍合到master分支上】

git checkout master                                       【切换到master分支】

git merge experiment                                    【快进合并】

 

git rebase --onto master server client           【检出client分支,找出client分支和server分支的共同祖先之后的变化,在master上重演】

 

git rebase master server                               【检出特性分支server,在主分支master上重演】【省去切换到server这一步】

 

注意:永远不用衍合那些已经推送到公共仓库的更新。

 

五、服务器上的Git

协议:本地、SSH、Git、HTTP

 

把一个仓库克隆为纯仓库

git clone --bare  my_project my_project.git

 

纯目录转移到服务器

scp -r my_project.git [email protected]:opt/git

 

访问权限:建立账户、git账户,用户发SSH公钥

 

ssh-keygen

 

架设服务器

1、创建git用户,并创建.ssh目录。

2、将开发者的SSH公钥放在authorized_keys

3、git init --bare设定一个空仓库

4、开发者推送远程分支

5、git-shell替代shell

 

六、分布式Git

1、集中式工作流

2、集成管理员工作流

3、司令官与副官工作流

 

七、为项目做贡献

1、不要在更新中提交多余的白字符。

2、每次提交限定于完成一次逻辑功能。

3、提交说明:一行以内,50字符以下,空开一行后,再展开详细注解。祈使现在式语态。

4、详细注解:本次修订因由、不同实现之间的比较。

 

私有小型团队。

私有团队间协作。

公开的小型项目【没有更新主仓库分支的权限】。

公开的大型项目。

 

以上是关于Git 常用命令的主要内容,如果未能解决你的问题,请参考以下文章

Git 中 6 个基本常用命令

git常用命令总结 git常用命令总结

Git常用命令

Git常用命令

git branch管理常用命令

Git常用命令收集