Git的目标是管理一个工程,或者说是一些文件的集合,以跟踪它们的变化。Git使用Repository来存储这些信息。
Repository(仓库)包含的内容主要包含以下内容:
- 许多commit objects
- 到commit objects的指针,叫做heads
- Git的仓库和工程存储在同一个目录下,在一个叫做.git的子目录中。
一般执行步骤(右击项目名 git bash):
- git init
- git add */
- git remote //查看当前远程库
- git commit
- git push
克隆别人项目提交代码主要步骤:
1、克隆下来 git clone +仓库地址
2、建一个分支(所有的改动都是在分支上) git branch +分支名
3、切换到新建的分支 git checkout +分支名 切换到新的分支
4、先提交代码到分支上 git add . git commit -m “文字”
5、先切换至主支上 git checkout master
6、然后合并分支 git merge +分支名
7、合并完以后就push 最好先pull一次 然后 git push
8、切换到自己的分支 git merge 线上分支名称
git add: 添加内容到下一次提交中 。 1.跟踪新文件 2.已跟踪的文件放到暂存区 3.合并时把有冲突的文件标记为已解决 状态等。
git add . (空格+ 点) 表示add当前目录所有文件
git rm 暂存区域移除 +工作目录中删除,不会出现在未跟踪文件。
//手动从工作目录删,状态会变成Changes not staged for commit”
//手工删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
//
从暂存区域移除),但希望保留在当前工作目录中。 换句话说,你想让文件保留在磁盘,但是并不想让 Git 继续 跟踪。git rm --cached test.html
git reset . 取消add
git reset --merge 取消合并
git rebase 将当前分支重新设置基线
git diff -w +冲突的文件 查看冲突点,修改冲突的文件,达到提交的状态。
git fetch [remote-name] 从远程仓库中抓取与拉取
git fetch和git pull的区别
- git fetch:相当于是从远程获取最新版本到本地,不会自动合并。
git fetch origin master:tmp
git diff tmp
git merge tmp
含义:
- 首先从远程的
origin
的tmp
分支下载最新的版本到origin/master
分支上 - 然后比较本地的
master
分支和origin/master
分支的差别 - 最后合并分支
2. git pull:相当于是从远程获取某个分支最新版本并merge
到本地
git pull origin master
相当于git fetch
和 git merge
在实际使用中,git fetch
更安全一些,因为在merge
前,我们可以查看更新情况,然后再决定是否合并。
提交的四种状态:
未跟踪(Untracked files)
:在版本提交後才又加進來
的檔案,這些檔案並沒有被GIT所追蹤控管已暂存(Changes to be committed)
:在工作目錄(WD)的檔案執行git add
後,會放在暫存區(Stage)。這些放在暫存區的檔案狀態便是等待提交
囉!已提交(Committed)
:在暫存區(Stage)的檔案執行git commit
後,檔案便置於儲存區(Repo),這些放在儲存區的檔案即是已提交
的狀態。已更改(Changes not staged for commit)
:已提交版本後,卻又再次修改,(修改已跟踪文件,除了未跟踪,其余都算已跟踪)這些檔案會被丟回
工作目錄(WD)(已跟踪文件的内容发生了变化,但还没有放到暂存区。要用暂存这次更新)
注意:新增文件、修改代码等等都会是状态发生变化,新增文件add。已更改文件会丢回工作目录,所以需要重新add, 因为保存的是当时执行命令的版本。
四个状态的接下来步骤:
未跟踪(Untracked files
-- git add
已暂存(Changes to be committed -- git commit
已提交(Committed -- git push
已更改(Changes not staged for commit
-- git add
查看修改了那些内容:
1. git status 先查看状态,查看修改了那个文件。
2. git diff 查看具体修改内容是什么(未暂存时的)
撤销几种执行的方式
1.提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了
git commit --amend //重新提交
2.弄错了 git add后 , 又 git commit 了。
先使用
git log 查看节点
commit xxxxxxxxxxxxxxxxxxxxxxxxxx
Merge:
Author:
Date:
然后
git reset commit_id
错误一、falied to push some refs to ...........
原因: 线上线下版本内容有差。
解决: 1、线上线下合并 git pull --rebase origin master
2、然后再push git push origin master
成功结果:出现 master -->master
错误二、You have not conclued your merge
原因:pull下来的代码自动合并失败
解决办法一: 保留本地的更改,中止合并 -->重新合并-->重新拉取
git merge --abort
git reset --merge
git pull
git fetch --all
git reset --hard origin/master
错误三、fatal: Not a valid object name: 'master'.
原因:建立分支时出错
解决:先commit才会真正建立master分支,此时才可以新建立分支
错误四、error: pathspec 'origin/test' did not match any file(s) known to git.
原因:切换分支失败
解决:
git fetch取回所有分支的更新
执行git branch -a查看分支信息
切换分支git checkout new(分支名)