点击打开目录
origin
是remote组中的默认成员, 在git clone
时自动创建, 其值为远程repo的url(url以.git
结尾)。
git reset <file>
或者如下
git reset
撤销所有的已add但未commit的修改。
注: 如果repo还没有任何的commit, 也可以通过如下的命令撤销[2]
git rm [-r] --cached <added_file_to_undo>
其中-r
是可选项, 表示递归式操作, 当需要撤回的文件包含文件夹时需要设置该选项。
原理在于git ret
是将HEAD
撤销至上一次commit状态, 而若还没有任何的commit, 则HEAD
无法解析。其中[2]给出了很有趣的解释。
git reset <commit_id>
将HEAD
指针☞回commit_id
所标识的commit, 而查找相应的commit id可以通过git log <-no.>
完成。其中no.
为commit的编号, 从新到旧递增, 当前的commit编号为1, 所以可以通过
git log -2
查看目标commit, 可以进一步比对commit内容确认。明确commit id后, 执行git reset <commit_id>
即可。
注: 以上操作将完全撤销至上一次commit后的状态, 但不会撤回已经修改的代码。
Branch管理原则[1]:
In your github fork, you need to keep your master branch clean, by clean I mean without any changes, like that you can create at any time a branch from your master. Each time that you want to commit a bug or a feature, you need to create a branch for it, which will be a copy of your master branch.
将远程的repo(origin/master)同步至本地
git pull
然后, 以此创建新的branch
git checkout -b [name_of_new_branch]
将新的branch推送至远程repo
git push -u origin [name_of_new_branch]
在新创建的branch上进行修改, 所有的commit在该branch上开展, 直至达到阶段性的进展再考虑将其同步至master branch。
在新的branch上commit前务必确认当前处于新的branch, 如下命令查看当前branch
git branch --list
当前branch将会用*
标注。
如果当前branch中的修改到达一个阶段, 可以将其合并至master branch中, 操作如下
git checkout master
git merge origin/[name_of_new_branch]
首先切换回master branch, 再执行merge
命令, 将修改发生的branch合并至master branch中。
修改本地的branch名称, 首先定位到需要修改名称的branch, 然后[4]
git branch -m new_name
删除旧名称的branch并将新名称推送至远程repo
git push origin :old_name new_name
为本地的branch重新创建上传的通道
git push origin -u new_name
git push --delete <remote_name> <branch_name>
git branch -d <branch_name>
第一条删除远程的分支, 第二条删除本地分支。[7]
git remote
是管理远程repo的指令, 当每一个项目独立成repo的情况下似乎不需要常使用该指令[3]。以下罗列可能的使用场景:
- 检查远程repo与本地的差异
git remote [-v | --verbose] update
该指令将比对所有remote组中的远程repo各个branch与本地repo相应branch的差异, 一般对个人(现阶段的我)而言, remote组中只有一个成员, 即origin
。
- 查看远程repo的全部信息
git remote -v
该指令将罗列出当前git环境下所有的远程repo信息, 以<remote_name, url>
对的形式显示, 一般而言即显示类似如下内容:
origin https://github.com/zouyu4524/RL-market.git (fetch)
origin https://github.com/zouyu4524/RL-market.git (push)
- 添加SSH密钥[6]
可以首先通过ls ~/.ssh/
查看当前系统中是否存在SSH密钥, 如果显示没有以.pub
为后缀的文件, 则还没有SSH。
- 通过以下命令创建SSH密钥:
ssh-keygen -t rsa -C "any comments"
顺次会提示确认密钥存放地址, 设置查看密钥的密码/确认密码, 可以按照默认流程按三次回车则生成的密钥将存放于~/.ssh
目录下, 且无需密码查看。其中-t
是制定加密方式, 一般用rsa
, -C
用于添加注释。
- 更改
remote
url为git
格式
默认情况下, 从github的远程repo克隆时会提供https
的地址, 在这种情况下, 即便在Github的Settings/SSH keys中添加本机的秘钥也仍然需要每次push时提供账户和密码[5]。实际上需要通过git
的链接克隆就不会有这个问题了。如果当前的本机repo已经是通过https
地址克隆而来, 那么可以修改remote地址为git
格式即可, 如下:
git remote set-url origin git@github.com:USERNAME/REPOSITORY.git