对于 新的且非空的 IDEA的Git项目来说,可以通过VCS选项创建新的Git仓库,进而可以管理远程分支,选择要同步的远程仓库地址,之后就可以拉取远程项目到本地,从而正常的与远程仓库进行同步。
“提取” 的含义是命令git fetch(获取),即从远程仓库抓取本地没有的修改; “拉取” 的含义是git fetch(获取)紧接着一个git merge(合并),对应git中的命令git pull,即从远程仓库抓取本地没有的修改并自动合并到远程分支。
对于Git的本质来说,删除也是一种提交请求,当一个文件被云端和本地纳入Git的版本控制后,这个文件的仓库区版本在云端或者本地的提交或拉取中就会保持一致性。
git init # 初始化项目
git status # 查看当前目录下文件的状态
git status --ignored # 查看被忽略的文件和文件夹的状态
git add (文件名 | .) # 添加到暂存盘,文件名代表某文件,"."代表所有文件
git commit -m "备注" # 提交到git本地仓库,产生新版本,引号中的备注必须写
git commit --amend # 对**最近一次的提交**请求进行修改,可以修改提交信息也可以修改提交内容
git log # 查看所有提交的记录
git reflog # 就可查看所有历史版本信息
git clone 仓库链接 # 克隆远程仓库,进行连接
git push [remote] [branch] # 将本地仓库push到远程仓库
git pull [remote] [branch] # 将远程仓库的更改快速**拉取并合并**到当前分支。可指定远程仓库和分支名,不指定则拉取并更新当前分支
git fetch [repository] [branch] # 将远程仓库的更改拉取下来,存放到本地版本库,并不直接合并到当前分支,如不指定具体仓库和分支名则会获取所有分支的更新。
git remote -v # 显示所有远程仓库
git remote show [远程仓库名] # 展示远程仓库的信息
git remote add [name] [url] # 用于添加远程版本库
git remote remove [远程仓库名] # 删除指定的远程仓库
git remote rename [old_name] [new_name] # 修改仓库名
删除文件命令
git rm <file> // 从工作区和暂存区删除某个文件
git rm --cached <file> // 从暂存区删除文件,本地工作区不做出改变
git checkout -- <file> // 将暂存区的文件覆盖工作区的文件,从而把误删的文件恢复
文件状态比较命令
git diff # 用于比较工作区和暂存区的区别
git diff --cached # 比较的是暂存区和版本库的区别
git diff HEAD # 查看工作区和版本库的区别,但这三个都需要文件已经纳入Git的管理才可以看出区别
# 查看分支命令
git branch -a # 查看本地所有分支
git branch -vv # 查看本地分支与远程分支的映射关系
**# 分支管理命令**
git checkout [branch] **# 切换到指定分支**
git checkout -b [branch] # 创建一个本地分支,并切换到此分支上
git checkout --orphan [分支名] **# 创建一个空白分支,该分支包含父分支的所有文件**
git merge [branch] **# 合并指定分支到当前分支,合并到的位置是工作区**
git branch -d [branch] # 删除一个本地分支,要先切换到其他分支上
git branch -m [原名称] [新名称] **# 修改分支的名字**
git branch -f 分支名 节点ID # 将指定分支强制指向特定的节点位置
git push -f maze-zero master # 将本地master分支强制推送到远程 maze-zero
git push -u [远程仓库名称] [分支名称] # 将本地分支推送到远程,并让本地分支关联远程分支
git push maze-zero --delete master # 删除远程分支
# 分支配置命令
git branch -u [remote/branch] # 将本地分支与远程分支进行关联
git log // 查找需要撤销的 commit_id
git revert commit_id # 撤销这次提交 只是撤销此次提交的内容,可以撤销撤销提交的提交
# 当使用 revert 命令 撤销一次合并操作时,需要使用-m选项指明想要恢复的是哪个分支,
# 1指的是回到主分支合并之前,2指的是回到合并的分支合并之前,一般默认选1就好。
# 解释1
# 对主分支来说,1会保留主分支合并之前的内容,将其他分支合并来的内容抛弃,选2会保留分支合并进来的内容,但主分支中会抛弃掉与合并分支相重叠的部分
A -> B ->
E -> F
C -> D ->
#比如这里的E节点,它是AC两个分支合并的节点,
#这里假设是你在A分支使用命令merge C,那么E就有两个上游节点了,
#当你在新的分支F(其实就是之前的A分支)revert E 时,你就需要加上-m参数了,
#当你指定1时,就是revert 掉 B到E的改动,当你指定2时,你也可以revert 掉 D到E的改动
# 解释2
1 -> 2 -> # 分支1
0 -> --> 5 # 分支3
3 -> 4 -> # 分支2
在分支1中合并分支2后生成节点5,当撤销节点5时,-m选项为1时,保留0、1、2的内容,选项为2时保留0、3、4的内容
# 此提交方式对于远程和本地都适用
# 对本地来说,撤销提交即可,无需推送云端。
# 对远程来说撤销此次提交后,还应将当前提交请求提交推送到云端,以更新远程仓库。
git log // 查询要回滚的 commit_id
git reset --hard commit_id // HEAD 就会指向此次的提交记录
git push origin HEAD --force // 强制推送到远端
# 主要用于本地使用,对于云端来说需要使用强制提交,容易引发问题。
git reset --soft:此次提交之后的修改会被退回到暂存区。
git reset --hard:此次提交之后的修改不做任何保留,git status 查看工作区是没有记录的。
# 取消git add 操作
git reset [文件名称] 取消暂存区的文件,但不会改变工作区中的文件
# 取消git commit 操作
git reset commitID --soft 撤销此次提交,将修改退回到暂存区,但并不删除文件。
# 误使用 git reset --hard 操作
先通过 git reflog 查看所有提交,找到使用 git reset --hard 操作之前的提交,
之后通过使用 git reset commitID --hard,将工作区重新回到之前的样子