Loading

git常用命令

 

git基础操作:http://www.admin10000.com/document/5374.html

git远程操作:http://www.admin10000.com/document/4554.html

 

# 生成密钥

ssh-keygen  -t rsa –C "<userEmail>"

 

# 配置用户信息

git config --list

git config --global user.name "<userName>"

git config --global user.email "<userEmail>"

 

###  本地仓库操作

# 初始化仓库

git init   # 需空目录下执行

git init <仓库名>  # 建立一个仓库文件夹,并以此命名

 

# 添加文件

git add <fileName>

git add <dirName>   # 添加指定目录到暂存区,包括子目录

git add .    # 添加当前目录的所有文件到暂存区

git add *   # 提交所有的文件到缓存区

git rm <fileName>   # 删除工作区文件,并且将这次删除放入暂存区

git rm --cached <fileName>   # 停止追踪指定文件,但该文件会保留在工作区

 

# 查看状态

git status

git log --stat   # 查看每次commit发生变更的文件

 

# 提交文件

git commit -m "<注释内容>"

# 提交时显示所有diff信息

git commit -v

 

# 查看文件修改的内容

git diff <fileName>

 

# 查看历史修改记录

git log

git log --pretty=oneline

 

# 回退版本

git reset --hard HEAD^

git reset --hard HEAD^^

git reset --hard HEAD~100

git reset --hard <版本号{从git log里查看}>

 

 # 撤销修改

## 一、修改内容,还未提交(未git add)

方法一: 直接修改文件,add,commit;

方法二:git reset --hard HEAD^

## 二、git checkout -- <fileName>

情况一:文件修改了,还未提交到缓存区,执行撤销后,文件回到修改状态之前;

情况二:文件修改了,并且提交到缓存区,之后又修改了文件,执行撤销后,回到添加暂存区后的状态。

 

# 删除文件

git rm <fileName>

 

# 删除文件之后,未commit,再撤回

git checkout -- <fileName>

 

 

 

 

 

 

 

###  远程仓库操作

# 克隆git仓库

git clone <版本库的网址>

git clone <版本库的网址> <本地目录名>   # 在本地生成目录,默认是使用git仓库的项目名

git clone -o <主机名> <版本库的网址>   # 克隆时,指定主机名

 

# git中远程仓库,即远程主机 ,默认主机名时origin

# 列出远程主机

git remote

# 列出远程主机详细信息

git remote -v

# 查看主机详细信息

git remote show  <主机名>

# 添加远程主机

git remote add <主机名> <版本库的网址>

# 修改远程主机名

git remote rename <原主机名> <新主机名>

# 删除远程主机

git remote rm <主机名>

 

# 拉去分支fetch

git fetch <远程主机名>   # 将远程主机的更新,全部取回本地

git fetch <远程主机名> <分支名>   # 取回特定的分支

# 取回远程分支后,在此分支的基础上,创建一个新的分支

git fetch 

git checkout -b <newBranch> <远程分支名>   # 示例: git checkout -b newBranch origin/master

 

# 拉取分支pull

git pull <远程主机名> <远程分支名>:<本地分支名>

git pull <远程主机名> <远程分支名>    # 远程分支是与当前分支合并,则冒号后面的部分可以省略; 等同于下面两步:git fetch ; git merge origin/master

# 本地分支和远程分支建立追踪(映射)关系

git branch --set-upstream <本地分支名> <远程分支>   # 示例:git branch --set-upstream  locaBranch origin/oneBranch

上面会被取消,以后会慢慢用下面

方法一:git branch --set-upstream-to=origin/remote_branch  local_branch

方法二:

如果远程新建了一个分支,本地没有该分支,可以利用** git checkout --track origin/branch_name** ,这时本地会新建一个分支名叫 branch_name ,会自动跟踪****远程的同名分支 branch_name。

 

# 查看当前分支与远程分支的对应关系

git branch -vv

# 如果当前分支和远程分支存在追踪关系,则可以省略远程分支名

git pull origin

# 如果当前分支只有一个追踪分支,远程主机名都可以省略

git pull

 

# 推送分支

git push <远程主机名> <本地分支名>:<远程分支名>

git push origin master:master

# 如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

git push <远程主机名> <本地分支名>

git push origin master

# 如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支

git push origin :master

# 删除远程分支

git push <远程主机名> --delete <远程分支名>

# 如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。

git push <远程主机名>

git push origin

# 如果当前分支只有一个追踪分支,那么主机名都可以省略

git push

 

# 如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。 

git push -u origin master

 

# 不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。如果要修改这个设置,可以采用git config命令。

git config --global push.default matching

# 或者

git config --global push.default simple

 

 

 

 

# 操作分支

# 创建分支

git branch <branchName>

# 切换分支

git checkout <branchName>

# 查看分支

git branch      # 查看本地分支

git branch -a  # 查看所有分支,包括本地分支和远程分支

git branch -r  # 查看远程分支

# 创建并切换分支

git checkout -b <branchName>

# 合并分支

git merge <branchName>   # fast forward模式,删除分支后,会丢掉分支信息

git merge -no-ff -m "<注释>" <branchName>

# 删除分支

git branch -d <branchName>

# 新建一个分支,与指定的远程分支建立追踪关系

git branch --track [branch] [remote-branch]

 

# 生成一个可供发布的压缩包

git archive

 

# 需要采用rebase模式,可以使用--rebase选项

git pull --rebase <远程主机名> <远程分支名>:<本地分支名>

 

# 合并分支

git rebase 

 

# 隐藏分支

git stash

# 恢复隐藏分支

git stash list

git stash apply  # 恢复后,stash内容并不删除,你需要使用命令git stash drop来删除

git stash pop    # 恢复的同时把stash内容也删除了

 

 

posted @ 2019-03-01 17:18  wsongl  阅读(169)  评论(0编辑  收藏  举报