git常用命令
0. 安装并初始化git server
1. 基本命令
-
git clone url
-
git tag
-
git checkout v1.3.3.5
-
coding and testing
-
git diff # Check the changes via the diff command
-
git add . # Add all (files and directories) to the Git repository
# Commit the changes, -a will commit changes for modified files
# but will not add automatically new files
git add dir_name # 增加一个目录及目录下的所有文件和子目录 -
git commit -a -m “add code”
-
git tag v1.5.5.0 -m “add code”
-
git push --tags # 把所有tags及与tags相关的代码都同步到远端仓库,
# push所有tag,命令格式为:git push [origin] --tags
或 git push origin v1.5.5.0 # push单个tag, 命令格式为:git push origin [tagname] -
常用命令
a) gitk --all
b) git status
c) git log
d) git reset --hard #代码还原 -
git pull origin master #更新代码
-
git push -u origin master #上传代码,将本地的master分支推送到origin主机,
#同时指定origin为默认主机,后面就可以不加任何参数使用git push了。 -
git push origin master #将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。
-
git push origin --delete master #删除origin主机的master分支
-
git push --all origin #将所有本地分支都推送到origin主机
-
git push origin --tags #git push不会推送标签(tag),除非使用–tags选项
-
git clone --recurse-submodules https://github.com/tensorflow/tensorflow
# 使用–recurse-submodules选项来获取TensorFlow需要依赖的protobuf库文件 -
git checkout - - < file >…" to discard changes in working directory" to discard changes in working directory
-
git 还原本地仓 与 远程仓 同步
git fetch origin
git reset --hard origin/master
- git 还原文件
git status
git reset HEAD diff_file
git checkout diff_file
- 恢复本地误删文件的状态到暂存区或仓库区该文件的最新状态
git restore diff_file
- Git在本地修改后并删除了一个文件后,从服务端拉取
git reset --hard HEAD # 表示回退到当前版本, HEAD指向当前版本.
# 如果你修改了一些代码,想去除,就可以使用
# git reset --hard HEAD一次性去除.
git reset --hard HEAD^ #表示回退到上一个版本.
git checkout commit id #也可以回退到指定的版本(之前的提交还在)
2. git 公钥添加方法
-
生成~/.ssh/id_rsa 和 ~/.ssh/id_rsa.pub
$ ssh-keygen -t rsa -C “abc@dd.com” -
上传公钥到服务器,(或直接拷贝内容)
$ scp id_rsa.pub root@10.10.1.5:/volume1/git_repos/
输入密码即可 -
把公钥信息追加到/volume1/git_repos/.ssh/authorized_keys
$ ssh -l root 10.10.1.5 或 ssh root@10.10.1.5 # login git server
$ cp authorized_keys authorized_keys.bak # backup authorized_keys
$ cat …/id_rsa.pub >> authorized_keys
$ cat authorized_keys # check it with e-mail
3. git创建版本库
$ ssh root@10.10.1.5
$ cd /volume1/git_repos/develop
$ mkdir MY.git //创建新仓库文件夹
$ cd MY.git
$ git init --bare //初始化
$ cd …
$ chmod 777 -R xxx.git //修改权限,即可使用
4. 总结
- 查看远程分支
$ git branch -a
/ e.g.:
// master
// remotes/origin/v0.9rc1
- 查看本地分支
$ git branch // 查看所有分支,其中前面有星号的是当前所在分支,
// 下方即为master分支。
$ git branch -v // 查看所有分支和该分支上最后的一次提交。
$ git branch --merged // 查看已经合入当前分支的所有分支。
$ git branch --no-merged //查看未被合入分支。
- 切换分支
$ git checkout -b v0.9rc1 origin/v0.9rc1
// 已经切换到v0.9rc1分支了
// 切换回master分支
$ git checkout master
- git push
$ git push <远程主机名> <本地分支名>:<远程分支名>
$ git push origin :master //删除origin主机的master分支
$ git push origin // 将当前分支推送到origin主机的对应分支
$ git push // 当前分支只有一个追踪分支,那么主机名都可以省略
$ git push -u origin master //当前分支与多个主机存在追踪关系,
//则可以使用-u选项指定一个默认主机
$ git push --all origin // 不管是否存在对应的远程分支,
// 将本地的所有分支都推送到远程主机
$ git push --force origin // 如果远程主机的版本比本地版本更新,
// 推送时Git会报错,要求先在本地做git pull合并差异,
// 然后再推送到远程主机。这时,如果你一定要推送,
// 可以使用–force选项。
$ git push origin --tags // git push不会推送标签(tag),除非使用–tags选项。
- git pull
$ git pull <远程主机> <远程分支>:<本地分支>
$ git pull origin master:my_test // 将origin厂库的master分支拉取并合并
// 到本地的my_test分支上
$ git pull origin master // 如果省略本地分支,则将自动合并到当前所在分支
- 创建新的分支并切换到该分支上进行提交
$ git branch <分支名>
$ git branch bugfix01 // 在当前分支也就是master分支上创建了一个名为
// bugfix01的新分支
$ git checkout <分支名>
$ git checkout bugfix01 //切换到我们新创建的bugfix01的新分支上
$ git commit //在新的分支上进行代码提交
- 创建并切换分支
$ git checkout -b <分支名>
$ git checkout -b bugfix02 //在当前所在分支bugfix01上创建一个新的分支
//并且切换到新创建的bugfix02上
$ git commit //在新的分支 bugfix02 上进行提交了
- 分支的合并-merge
$ git checkout master // 切换到master分支上
$ git merge bugfix01 // 将 bugfix01 分支的修改合入到master分支上
$ git merge bugfix02 // 将 bugfix02上的修改合入到master分支上
$ git commit // 在master分支上进行正常提交
- 分支的删除
$ git branch -d bugfix01 // 分支 bugfix01 进行删除
$ git branch -d bugfix02 // 对分支 bugfix02 进行删除
5. git查看提交修改的文件列表
1.查看最后一次提交记录的修改文件信息
git show --raw
2.查看指定commit id对应修改文件列表
git show --raw commit_id
git show --raw 2f80f1c8bb2cb8e91d22ad38480b681c194f6518
3.查看所有提交记录的修改文件信息
git log --stat
git log --name-only
4.查看所有修改相关的commit ID和comment信息
git log --pretty=oneline
5.查询指定author的修改信息
git log --author=jack.li
6.查看指定author在指定时间修改信息
$ git log --pretty=“%h - %s” --author=‘Junio C Hamano’ --since=“2008-10-01”
–before=“2008-11-01” --no-merges – t/
5610e3b - Fix testcase failure when extended attributes are in use
acd3b9e - Enhance hold_lock_file_for_{update,append}() API
- 查看指定commit id修改的文件列表
$ git show -s --pretty=raw 8d3152407573f41fab06a5177b9aa764d790fd6f
6. GIT 查看/修改用户名和邮箱地址
- config 配置有system级别 global(用户级别) 和local(当前仓库)三个 设置先从system-》global-》local 底层配置会覆盖顶层配置 分别使用–system/global/local 可以定位到配置文件
- 查看系统config
git config --system --list
- 查看当前用户(global)配置
git config --global --list
- 查看当前仓库配置信息
git config --local --list
6.1 用户名和邮箱地址的作用
- 用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变。
- 每次commit都会用用户名和邮箱纪录。
- github的contributions统计就是按邮箱来统计的。
6.2 查看用户名和邮箱地址
$ git config user.name
$ git config user.email
6.3 修改用户名和邮箱地址
$ git config --global user.name "username"
$ git config --global user.email "email"