一、初始化项目,并上传到git服务器
基本过程:创建远程仓库、初始化本地git仓库、将本地仓库于远程仓库关联起来、添加本地仓库想要提交的代码到本地git缓冲区,将本地仓库的本地分支于远程仓库的远程分支关联起来、提交代码。。
1. 在git服务器上创建同名git项目,并获取http地址
2. 本地git初始化项目git仓库,在项目目录下
$ git init
3. 将本地git仓库和远程仓库关联起来,并设置远程仓库名称
git remote add <name> <http地址>
例如:git remote add origin https://github.com/CraZYJH/demo.git
4. 添加项目文件到本地git缓冲区
第一种方法:git add -A 、git commit -m '初始化项目'
第二种方法:git commit -a -m '初始化项目'
5. 将本地分支关联远程分支并提交,git 默认在远程分支上创建与本地分支同名的分支
git push --set-upstream origin master
这就是将本地的master分支与origin 远程仓库关联起来并在远程仓库创建同名master分支,以后本地master 都提交到远程仓库中的origin/master分支上。upstream :上游的意思。
二、提交某一分支的修改
1. 查看当前分支的修改
git status
2. 查看想要查看的文件的修改
git diff <file_name>
3. 确认正确后,提交修改到暂存区
git add -A 或者 git add <file_file1> <file_name2> ...
4. 提交到本地仓库
git commit -m '修改信息'
5. 提交到远程仓库
git push
三、拉取远程分支修改到本地分支
当远程分支别人推了一版新的代码时,我们想要将代码拉下来,可以采用两种方式pull和fetch+merge。
pull和fetch+merge 不同点:
1. 使用pull
将远程分支最新代码更新合并到本地仓库区和工作区
git pull
2. 使用fetch
- 将远程所有分支最新的commit更新到FETCHHEAD,记录远程分支最新的commit_id 和本地仓库区
- 将最新代码合并到工作区
git fetch
git merge
四、取消track某一文件:track 跟踪
git rm-r--cache <file_name>
untrack后,使用commit -a时,不会将其添加到暂存区中
之后会在.ignore 文件中将该untrack的文件添加进去,完成。
五、保存账号密码,避免每次push都要输入
1. 确保在git中输入过账号和密码
2. 输入下面语句即可
git config --global credential.helper store
六、暂存自己的修改,便于接着工作(特别有用)
试想一个场景:如果你正在一个分支上工作修改,leader让你改另外的分支的BUG或者对其他分支做一些操作。
我们知道如果一个分支上还没有commit的修改的话,不可以切换分支,但是又因为自己的工作未完成,不想commit,此时git stash就起作用了。
1. 将当前分支的修改暂存起来(此处不等于add+commit)
git stash
备份当前的工作区的内容,从最新你的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区修改的内容保存到Git栈中暂存起来。
2. 切换到别的分支工作,完成后切换回原来的工作分支,查看暂存列表
git stash list
显示Git栈内的所有备份,可以利用这个列表来决定从哪个地方恢复
3. 恢复暂存的修改到工作区
git stash apply <stash_name> 恢复暂存之后不删除暂存
git stash pop 恢复暂存之后删除暂存
4. 删除‘暂存’
git stash drop <stash_name> 从Git栈中删除最旧的一个暂存
七、将文件修改回退到某一状态
一些已经提交的或者已经修改的部分,想要再修改一下,或者删除已经提交的
1. 删除某些commit,将head重定位到某一commit(回溯到以前的版本)
git reflog 查看所有 commit_id
git reset --head <commit_id> 会将commit_id 前的所有commit修改删除
git reset <commit_id> 不会将commit_id前的commit删除,而是会将修改回退到本地工作区
git push origin HEAD --force 此步骤将服务器方也设置为相应的commit
2. 将文件修改恢复到当前已提交分支的原样(未git add情况下)撤销修改就回到和版本库一模一样的状态,即用版本库里的版本替换工作区的版本。
git checkout -- <file_name>
3.将文件修改恢复到当前已提交分支的原样(已经git add 情况下)
git reset HEAD 将add退回
git checkout -- <file_name>
4. 将文件修改恢复到已提交分支的原样(已经git commit 情况下)
git reset <commit_id> 此处的commit_id 可以是任意分支的commit_id
git checkout -- <file_name>
八、版本的回溯与前进
有时候徐娅回溯或前进到以前的版本 或 回溯前进到以前的commit.
只要记住 commit_id 就可以在版本之间来回的穿梭,与七.1一样。