Git使用的一般步骤:
总览图:
本地操作:
1. Windows + R打开运行,输入cmd打开命令提示符
2. cd [当前project的根目录] 或[要存储代码的目录]
3. echo "# Lab1-学号" >> README.md
4. git init :为当前project初始化新建一个单独的新Git仓库
或者:git clone [url] :从现有远程仓库克隆,复制服务器上的所有历史信息到本地,方便之后push时不用再git remote add添加一个远程仓库。
5. git add [参数] <路径>: 将工作区中的指定文件或指定目录下的所有文件纳入到Git管理中(tracked),一个修改过的(modified)且被跟踪(tracked)的文件,处于暂存状态(staged)。此时,在暂存区中放置了指定的经过修改但是尚未commit的的文件,之后就可以使用git commit指令进行提交。
常见用法:
- git add -A:(all)将“所有跟踪文件(tracked)中被修改(modified)或已删除(deleted)文件和所有未跟踪(untracked)的新增文件”从工作区添加到暂存区(已删除的文件被加入(add)暂存区并提交(commit)和推送(push)到远程仓库后这个文件就从git系统中消失了)
- git add . :(.代表当前路径)将“所有未跟踪(untracked)的新增文件(new)和被修改(modified)文件,不包括被删除(deleted)文件”从工作区添加到暂存区
- git add -u:(update)将“所有跟踪文件(tracked)中被修改(modified)或已删除(deleted)文件,不包括未跟踪(untracked)的新增文件(new)”从工作区添加到暂存区
- git add *:同git add . ,区别在于git add .会根据.gitignore做过滤,但是git add * 会忽略.gitignore(git忽略提交参见https://www.jianshu.com/p/74bd0ceb6182)
git rm : 从Git中移除某个文件,将其从暂存区中移除,并连带从workspace中删除
6.git status: 查看哪些文件当前的文件状态(在commit前最好先试用git status检查一下是否还有修改过或新建的文件没有git add)
-
# On branch master nothing to commit (working directory clean)当前没有任何跟踪着的文件,也没有任何文件在上次提交后更改
-
# On branch master # Untracked files: …有未跟踪的文件,使用 git add 开始跟踪一个新文件
-
# On branch master # Changes to be committed:有处于已暂存状态的文件,等待提交
git diff : 查看工作目录(workspace)与暂存区(staging)快照之间的差别,即修改之后(modified)尚未暂存(unstaged)起来的变化内容
git diff --cached : 查看已暂存文件(staged)和上次提交时的快照之间的差异
7. git commit -m "message":将修改从暂存区提交到本地仓库,message可以是对本次提交的描述,例如git commit -m"V1.0 first commit"
git commit -a : 跳过git add步骤,直接将所有已经跟踪过的文件(tracked)暂存起来一并提交
8. git log :查看提交的历史信息
对远程仓库(remote repository)的操作:
9. git remote add origin [url地址]:添加一个远程仓库,将本地仓库与远程仓库建立链接。origin指向远程仓库,可随意起一个名字。
10. git push :将本地仓库的分支推送到远程服务器上对应的分支。
一般格式:git push <远程服务器名> <本地分支名> :<远程分支名>
例如git push origin master : refs/for/master, 意思是将本地的master分支推送到远程主机origin上对应的master分支。命令中的第一个master是本地分支名,第二个master是远程分支名。
常见用法:(参考https://blog.csdn.net/qq_37577660/article/details/78565899)
-
git push -u origin master:由于初始远程库是空的,我们第一次推送
master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送到远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送(push)或者拉取(pull)时就可以直接 git push origin master - git push origin master:如果远程分支被省略,则表示将本地分支master推送到远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
- git push origin :refs/for/master 如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin --delete master git push
- git push origin:如果当前分支与远程分支已经建立联系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支
- git push:如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用git branch -r ,查看远程的分支名
- 关于 refs/for:refs/for 的意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的,而refs/heads 不需要
11. git fetch :从远程仓库抓取数据到本地
git merge:合并分支,整合代码
12. git pull : 从一个仓库或者本地的分支拉取并整合代码,相当于git fetch + git merge
13. git remote show [远程仓库名] : 查看某个远程仓库的详细信息
git remote rm : 从本地移除 与远程仓库的链接