ssh-key

1
2
ssh-keygen -t rsa -C "$your_email"          # 获取 sshkey
cat ~/.ssh/id_rsa.pub # 查看 sshkey

首次使用 git

客户端首次使用 git 提交时需要将 id_rsa.pub 内容提交到 github 上不然每次都会提示输入用户名密码

然后输入必要的配置

1
2
3
4
git config --global user.name wxnacy            # 配置用户名
git config --global user.email [email protected] # 配置邮件
git config --global push.default simple
git push -u origin master

初始化项目

1
2
3
4
5
6
7
8
cd project_root                             # 进入项目目录
git init # 初始化git仓库
git add . # 添加文件到仓库
git commit -m 'init commit' # 提交代码到本地仓库
git remote add origin ${repository_path} # 将项目关联到git server
git pull origin master # 同步代码
git push origin master # push代码到远程仓库
git clone ${repository_path} # 新的位置clone项目

删除文件

1
2
3
4
5
rm -r file_path
git rm -r ${file_path}
git commit -m 'remove'
git pull origin master
git push origin master

用户信息

1
2
3
4
5
git config --global user.name wxnacy            # 配置用户名
git config --global user.email [email protected] # 配置邮件

$ git config user.name # 查看登录名
$ git config user.email # 查看登录邮箱

记住密码

在服务器上 clone 代码第一次通常会提示输入密码,为了下次不再提示,可以在 clone 后做如下操作

1
git config credential.helper store

撤销操作

重新提交

提交后如果发现遗漏可以使用 git commit --amend 重新提交

1
2
3
git commit -m 'initial commit'
git add forgotten_file
git commit --amend

撤销提交文件

1
2
3
4
5
6
7
8
9
git checkout -- <file>              # 取消对文件的修改。还原到最近的版本,废弃本地做的修改。
git reset HEAD <file>... # 取消已经暂存的文件。即,撤销先前"git add"的操作
git reset HEAD^ # 回退所有内容到上一个版本
git reset HEAD^ a.py # 回退a.py这个文件的版本到上一个版本
git reset –soft HEAD~3 # 向前回退到第3个版本
git reset –hard origin/master # 将本地的状态回退到和远程的一样
git reset 057d # 回退到某个版本
git revert HEAD # 回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit.(代码回滚到上个版本,并提交git)
git merge --abort # 撤销所有合并操作

或者

1
2
git -c core.quotepath=false rm --cached -f -- env.sh
git -c core.quotepath=false checkout HEAD -- env.sh

修改remote url

1
git remote set-url origin ${new_repository_path}

分支

1
2
3
4
5
6
git checkout -b ${new_branch} master    # 从master创建新分支
git checkout ${branch_name} # 定位分支
git checkout -b {local-branch-name} origin/{remote-branch-name} # 从远程分支创建新分支
git merge --no-off ${branch_name} # 将其他分支合并到master
git rebase origin master # master分支合并到当前分支
git pull origin {branch-name} # 拉取远程分支

标签

1
2
3
4
git tag ${tag_name} master              # 创建新分支
git push origin ${tag_name} # 将标签推到远程仓库
git branch -D ${branch_tag_name} # 删除本地分支或标签
git push origin :${branch_tag_name} # 删除远程分支或分支

提交检查

在代码提前前或查看提交记录详情时可能会用到下面几组命令

status

1
git status          # 查看当前版本状态(是否修改)

log

1
2
3
4
5
git log             # 显示提交日志
git log -1 # 显示1行日志 -n为n行
git log --stat # 显示提交日志及相关变动文件
git log -p -m # 显示提交日志及变动的详细情况
git log v2.0 # 显示v2.0的日志

show

1
2
3
4
5
git show dfb02e6e4f2f7b573         # 显示某个提交的详细内容
git show dfb02 # 可只用commitid的前几位
git show HEAD # 显示HEAD提交日志
git show HEAD^ # 显示HEAD的父(上一个版本)的提交日志 ^^为上两个版本 ^5为上5个版本
git show v2.0 # 显示v2.0的日志及详细内容

diff

1
2
3
4
5
6
git diff                                  # 显示所有未添加至index的变更
git diff --cached # 显示所有已添加index但还未commit的变更
git diff HEAD^ # 比较与上一个版本的差异
git diff HEAD -- ./lib # 比较与HEAD版本lib目录的差异
git diff origin/master..master # 比较远程分支master上有本地分支master上没有的
git diff origin/master..master --stat # 只显示差异的文件,不显示具体内容

参考资料

03-16 10:05