设置git 提交代码到guthub

Git的目标是管理一个工程,或者说是一些文件的集合,以跟踪它们的变化。Git使用Repository来存储这些信息。

Repository(仓库)包含的内容主要包含以下内容:

  • 许多commit objects
  • 到commit objects的指针,叫做heads
  • Git的仓库和工程存储在同一个目录下,在一个叫做.git的子目录中。

 

一般执行步骤(右击项目名 git bash):

  1.    git  init   
  2.    git add        */
  3.   git remote         //查看当前远程库
  4.   git commit      
  5.  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的区别

  1. git fetch:相当于是从远程获取最新版本到本地,不会自动合并。

git fetch origin master:tmp

git diff tmp

git merge tmp

含义:

  • 首先从远程的origintmp分支下载最新的版本到origin/master分支上
  • 然后比较本地的master分支和origin/master分支的差别
  • 最后合并分支

   

 2. git pull:相当于是从远程获取某个分支最新版本并merge到本地

git pull origin master

相当于git fetchgit 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(分支名)

 

发布了42 篇原创文章 · 获赞 15 · 访问量 5967
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览